package com.example.util;

/**
 * @Classname XssUtils
 * @Description TODO
 * @Date 2023/4/26 15:29
 * @Created by XiongXiong
 * @Author: X.I.O
 */
public class XssUtils {

    /**
     * 防止参数值中的 XSS 攻击。
     * @param value 参数值
     * @return 经过编码后的参数值
     */
    public static String encode(String value) {
        if (value == null) {
            return null;
        }
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < value.length(); i++) {
            char ch = value.charAt(i);
            switch (ch) {
                case '<':
                    result.append("&lt;");
                    break;
                case '>':
                    result.append("&gt;");
                    break;
                case '&':
                    result.append("&amp;");
                    break;
                case '"':
                    result.append("&quot;");
                    break;
                case '\'':
                    result.append("&#x27;");
                    break;
                case '/':
                    result.append("&#x2F;");
                    break;
                default:
                    result.append(ch);
            }
        }
        return result.toString();
    }
}
